package day1_array.leetcode;

/**
 * @author yuisama
 * @date 2023/03/16 14:32
 * 删除数组中重复元素，使得每个元素只出现最多2次
 **/
public class Num80_RemoveKDuplicates {
    public int removeDuplicates(int[] nums) {
        return process(nums,2);
    }

    // 删除nums中的重复元素，使得每个重复元素最多出现k次
    private int process(int[] nums, int k) {
        int i = 0;
        // nums[0..i)的元素一定是出现次数最多为k次的元素
        for (int x : nums) {
            if (i < k || nums[i - k] != x) {
                // i < k直接追加
                // i - k就是前k个元素与当前元素是否相同?
                // 相同跳过，这个元素已经出现k次
                // 不同添加
                nums[i ++] = x;
            }
        }
        return i;
    }
}